package com.jt;

import com.jt.mapper.ItemMapper;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import redis.clients.jedis.Jedis;
import redis.clients.jedis.params.SetParams;

@SpringBootTest
public class test {
//   测试redis
    /*
    * 配置redis服务
    * 1.redis需要关闭IP绑定模式
    * 2.redis需要关闭保护模式
    * 3.redis最好在后端运行*/

    @Test
    public void test1() throws InterruptedException {
//        1.测试连接
        Jedis jedis=new Jedis("192.168.126.129",6379);
        jedis.set("a", "动态获取redis中的数据");
        System.out.println(jedis.get("a"));
//         2.测试数据是否存在
        if (jedis.exists("a")){
            jedis.set("a", "修改数据");
        }else {
            jedis.set("a", "新增数据");
        }

        System.out.println(jedis.get("a"));
//        3.测试数据的删除
        jedis.del("a");

        if (jedis.exists("a")){
            jedis.set("a", "修改数据");
        }else {
            jedis.set("a", "新增数据");
        }

        System.out.println(jedis.get("a"));

//        4.清空数据
        jedis.flushDB();
        jedis.flushAll();

//        5.添加超时时间
        jedis.set("b", "设定超时时间");
        jedis.expire("b",10);
        Thread.sleep(2000);
//      6.剩余时间还剩多少
        System.out.println(jedis.ttl("b"));


    }
//    原子性
    @Test
    public void test2(){
        Jedis jedis=new Jedis("192.168.126.129",6379);
        jedis.set("c","测试redis");
//        数据不存在时，才会为数据赋值
        jedis.setnx("d", "测试setnx方法");
        System.out.println(jedis.get("d"));
//      为数据添加超时时间
        jedis.setex("s", 20, "超时111");
        System.out.println("获取超时时间"+jedis.ttl("s"));
    }
    /*
    * 需求：如果数据存在才修改，并且为数据添加超时时间，满足原子性要求
    * setparams：
    *   XX：数据存在时赋值
    *   NX：不存在时赋值
    *   EX：添加超时单位为秒
    *   PX：添加超时单位毫秒*/
    @Test
    public void test3(){
        Jedis jedis=new Jedis("192.168.126.129",6379);
        jedis.flushAll();
        SetParams setParams=new SetParams();
        setParams.xx().ex(20);
//        就是说，有这个键值对（"a","测试"）,才有
//        jedis.set("a", "测试");
        jedis.set("a", "测试方法",setParams);
        System.out.println(jedis.get("a"));
    }
    @Test
    public void testList(){
        Jedis jedis=new Jedis("192.168.126.129",6379);
        jedis.rpush("list", "1","2","3");
        System.out.println(jedis.rpop("list"));
    }

    @Autowired
    private Jedis jedis;

    @Test
    public void testJedis(){
        jedis.set("jedis", "spring对象测试");
        System.out.println(jedis.get("jedis"));
    }
}
